<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 基本数据类型： 
        // String Number Object Boolean null undefined Symbol

        var obj = { myName: 'hello' }
        // function foo(params) {
        //     obj.myName='hi';
        //     console.log(obj.myName); //hi
        // }

        function foo(params) {
            var myName = Symbol();
            obj[myName] = 'hi'
            console.log(obj[myName])
        }
        foo()
        console.log(obj.myName);//hi

        let s1 = Symbol('这是独一无二的')  //只是对当前Symbol值的一个描述
        console.log(s1);

        // let s2 =Symbol()
        // let s3 = Symbol()
        // console.log(s2===s3);
        let s2 = Symbol('foo')
        let s3 = Symbol('foo')
        console.log(s2 === s3);

        //symbol作为属性
        let a = {};
        a[s2] = 'hello'
        console.log(a);
        //第三种赋值的方法
        let b = {}
        Object.defineProperty(b, s3, { value: 'hi' })
        console.log(b[s3]);

        // Symbol.for 没有都返回同一个symbol值，会检查全局有没有给定的key，没有就会新建一个，有就用同一个
        let sf = Symbol.for('foo')
        let sf2 = Symbol.for('foo')
        console.log(sf===sf2);
    </script>
</body>

</html>